# -*- coding: utf-8 -*-
"""
@Time    : 2024/9/10 20:28 
@Author  : ZhangShenao 
@File    : 2.字典的常用操作.py 
@Desc    : 字典的常用操作

在Python3.7及以后的版本中,字典(dict)是有序的
这意味着它们会保持元素插入的顺序
"""

d = {"a": 1, "b": 2, "c": 3}

# 通过key访问value
print(f"d['a'] = {d["a"]}")  # d['a'] = 1
# 如果key不存在,则抛出异常
# print(f"d['e'] = {d["e"]}")  # KeyError: 'e'

# 使用get方法,利用key访问value
print(f"d.get('a') = {d.get('a')}")  # d.get('a') = 1
# 如果key不存在,则默认返回None
print(f"d.get('e') = {d.get('e')}")  # d.get('e') = None
# 可以为get方法指定默认值
print(f"d.get('e', 0) = {d.get('e', 0)}")  # d.get('e', 0) = 0

# 直接使用key,对字典进行upsert操作
# 如果key不存在,则新增key-value,如果key存在,则更新value
d["a"] = 10
d["d"] = 4
print(f"d = {d}")  # d = {'a': 10, 'b': 2, 'c': 3, 'd': 4}

# 使用update函数,更新字典的key-value
d.update(a=111, e=5)
print(f"d = {d}")  # d = {'a': 111, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# 使用popitem方法,删除并返回字典中的最后一个key-value
print(f"d.popitem() = {d.popitem()}")  # d.popitem() = ('e', 5)

# 使用pop方法,删除并返回字典中的指定key对应的value
print(f"d.pop('a') = {d.pop('a')}")  # d.pop('a') = 111

# 使用clear方法,清空字典
d.clear()
print(f"d = {d}")  # d = {}

# 字典的遍历
# 在Python3.7及以后的版本中,字典(dict)是有序的
# 这意味着它们会保持元素插入的顺序
d1 = {"k1": "v1", "k2": "v2", "k3": "v3"}
# 按照key遍历字典
print("按照key遍历字典:")
for k in d1:
    print(f"{k} -> {d1[k]}", end=" ")
print()

# 按照value遍历字典
print("按照value遍历字典:")
for val in d1.values():
    print(val, end=" ")
print()

# 按照k-v遍历字典
print("按照k-v遍历字典:")
for k, v in d1.items():
    print(f"{k} -> {v}", end=" ")
print()
